#ifndef DIALOGCREATE_H
#define DIALOGCREATE_H

#include <QDialog>
#include <QCheckBox>

#include <memory>
#include <vector>
#include <set>

namespace Ui {
class DialogCreate;
}

class DialogCreate : public QDialog
{
    Q_OBJECT

public:
    explicit DialogCreate(QWidget *parent = 0);
    ~DialogCreate();

    std::string projectPath() const;
    std::string projectName() const;
    std::shared_ptr<std::set<std::string> > supportedSuffixes() const;

    bool isValid() const;

    std::string sourcePath() const;

private slots:
    void on_buttonOK_clicked();
    void on_buttonOpen_clicked();

private:
    bool isNameAndPathValid();
    std::shared_ptr<std::set<std::string>> getSuffixes();
    void addComboBox();

    bool m_isValid;
    std::string m_projectPath;
    std::string m_projectName;
    std::string m_sourcePath;
    std::shared_ptr<std::set<std::string>> m_suffixes;
    std::vector<std::string> m_vSourceSuffixes;
    std::vector<std::string> m_vHeaderSuffixes;
    std::vector<QCheckBox *> m_vCheckBox;
    Ui::DialogCreate *ui;
};

#endif // DIALOGCREATE_H
